home *** CD-ROM | disk | FTP | other *** search
- unit LocateU;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- StdCtrls, Grids, DBGrids, Db, DBTables;
-
- type
- TForm1 = class(TForm)
- Table1: TTable;
- DataSource1: TDataSource;
- DBGrid1: TDBGrid;
- EdtCustNo: TEdit;
- EdtCompany: TEdit;
- Label1: TLabel;
- Label2: TLabel;
- Button1: TButton;
- Table1CustNo: TFloatField;
- Table1Company: TStringField;
- Table1Addr1: TStringField;
- Table1Addr2: TStringField;
- Table1City: TStringField;
- Table1State: TStringField;
- Table1Zip: TStringField;
- Table1Country: TStringField;
- Table1Phone: TStringField;
- Table1FAX: TStringField;
- Table1TaxRate: TFloatField;
- Table1Contact: TStringField;
- Table1LastInvoiceDate: TDateTimeField;
- EdtAddr1: TEdit;
- EdtAddr2: TEdit;
- Label3: TLabel;
- Label4: TLabel;
- procedure Button1Click(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- private
- { Private declarations }
- public
- Edits: array[0..3] of TEdit;
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.DFM}
-
- procedure TForm1.Button1Click(Sender: TObject);
- var
- KeyFields: String;
- Values: Variant;
- Loop, Count: Integer;
- begin
- Values := VarArrayCreate([0, 0], varVariant);
- Count := 0;
- for Loop := 0 to 3 do
- begin
- if Edits[Loop].Text <> '' then
- begin
- if KeyFields <> '' then
- AppendStr(KeyFields, ';');
- AppendStr(KeyFields, Copy(Edits[Loop].Name, 4, 255));
- VarArrayRedim(Values, Count);
- Values[Count] := Edits[Loop].Text;
- Inc(Count);
- end;
- end;
- { NB: The only partialness is for the last field if it is a string }
- if not Table1.Locate(KeyFields, Values,
- [loPartialKey, loCaseInsensitive]) then
- raise Exception.Create('Search values not found')
- end;
-
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- Edits[0] := EdtCustNo;
- Edits[1] := EdtCompany;
- Edits[2] := EdtAddr1;
- Edits[3] := EdtAddr2;
- end;
-
- end.
-